#include <iostream>
#include <stdlib.h>

#include "gtest/gtest.h"

//#include "kpextCommonDef.h"

#include "kpextVkContext.h"
#include "KpExtGP.h"

#include "kpextCtxGlobal.h"

using namespace std;

TEST(kpextCtx, Init){
    KpExtCtxEnv env;
    env.SetUp();
    ASSERT_NE(nullptr, GvkContextPtr);
}

TEST(kpextCtx, Destroy){
    KpExtCtxEnv env;
    env.TearDown();
    ASSERT_EQ(nullptr, GvkContextPtr);
}


GTEST_API_ int main(int argc, char **argv) {
    printf("Running main() from %s\n", __FILE__);
    //    kpextSetLoggerLevel(KpExtLOG_LEVEL_DEBUG);
    kpextSetLoggerLevel(KpExtLOG_LEVEL_INFO);
    //  kpextSetLoggerPattern("[%D %H:%M:%S.%e] [%^%l%$] %v");
    kpextSetLoggerPattern("   [SPDLOG_%l] %v");
    //    kpextSetVKValidationLayerEn(true);
    //    kpextSetVKComputeShaderDefWGS(256,2,3);

    //  _putenv("GTEST_BREAK_ON_FAILURE=1");
    testing::InitGoogleTest(&argc, argv);

//    testing::Environment* const foo_env =
//        testing::AddGlobalTestEnvironment(new KpExtCtxEnv);
//    UNUSE_VAR(foo_env);

    //  ::testing::FLAGS_gtest_break_on_failure = true;  //  出错就退出整个测试程序
    return RUN_ALL_TESTS();
}

